/*
 * 打开新页面并利用post方式传递参数
 * @param {type} url 打开窗口的网址或路径。
 * @param {type} name 窗口的名称："_blank","_top","_self"等。
 * @param {type} keys
 * @param {type} values
 * @returns {Window|openNewPageWithPostData.newWindow|Boolean}
 */
// var keys=[]; var values=[]; keys[0] = 'id'; keys[1]='pwd'; values[0] = '01'; values[1] = 'xxx';
// openNewPageWithPostData('xxx.html', '_self', keys, values);
function openNewPageWithPostData(url, name, keys, values) {
    var newWindow = window.open(url, name);
    if (!newWindow) {
        return false;
    }

    var postDataHtml = "<html><head></head><body>";
    postDataHtml = postDataHtml + "<form id='postDataForm' method='post' action='" + url + "'>";

    if (keys && values && (keys.length === values.length)) {
        for (var i = 0; i < keys.length; i++) {
            postDataHtml = postDataHtml + "<input type='hidden' name='" + keys[i] + "' value='" + values[i] + "'/>";
        }
    }

    postDataHtml = postDataHtml + "</form><script type=\"text/javascript\"> document.getElementById(\"postDataForm\").submit()<script><body><html>";
    newWindow.document.write(postDataHtml);
    return newWindow;
}

/* 
 * formatMoney(s,type) 
 * 功能：金额按千位逗号分割 
 * 参数：s，需要格式化的金额数值. 
 * 参数：type,判断格式化后的金额是否需要小数位. 
 * 返回：返回格式化后的数值字符串. 
 */
function formatMoney(s, type) {
    if (/[^0-9\.]/.test(s))
        return "0";
    if (s === null || s === "")
        return "";
    s = s.toString().replace(/^(\d*)$/, "$1.");
    s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
    s = s.replace(".", ",");
    var re = /(\d)(\d{3},)/;
    while (re.test(s))
        s = s.replace(re, "$1,$2");
    s = s.replace(/,(\d\d)$/, ".$1");
    if (type === 0) {// 不带小数位(默认是有小数位)  
        var a = s.split(".");
        if (a[1] === "00") {
            s = a[0];
        }
    }
    return s;
}
////////////////////////////////////////////////////////////////////////////////
// 还原金额，去掉逗号

function noFormatMoney(s) {
    if (s === null || s === "")
        return "0";
    return parseFloat(s.replace(/[^\d\.-]/g, ""));
}

Number.prototype.toPercent = function () {
    return (Math.round(this * 10000) / 100).toFixed(2) + '%';
};

// 对Date的扩展，将 Date 转化为指定格式的String 
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子： 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (format) {
    var o = {
        "M+": this.getMonth() + 1, //month
        "d+": this.getDate(), //day
        "h+": this.getHours(), //hour
        "m+": this.getMinutes(), //minute
        "s+": this.getSeconds(), //second
        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
        "S": this.getMilliseconds() //millisecond
    };
    if (/(y+)/.test(format))
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format))
            format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
    }
    ;
    return format;
};

/*
 * 格式化日期数据为yyyy-mm-r\dd
 * @param {type} value
 * @returns {String}
 */
function formatDate(value) {
    var reg = /[0-9]+/i;
    var temp = "";
    var dateTemp = new Date();
    if (value !== null) {
        temp = reg.exec(value);
        dateTemp.setTime(temp);
        temp = dateTemp.getFullYear() + "-" + ((dateTemp.getMonth() + 1) < 10 ? ("0" + (dateTemp.getMonth() + 1)) : (dateTemp.getMonth() + 1)) + "-" +
                (dateTemp.getDate() < 10 ? ("0" + dateTemp.getDate()) : dateTemp.getDate());
    }
    return temp;
}

function formatNullData(value) {
    return (value === null || value === 0 || $.trim(value) === '') ? "&nbsp;" : value;
}
function formatNullInputValue(value) {
    return $.trim(value).length > 0 ? $.trim(value) : null;
}
function formatBlankInputValue(value) {
    return $.trim(value).length > 0 ? $.trim(value) : "";
}

function getCurrentDate() {
    var outStr = "";
    var currentDate = new Date();
    outStr += currentDate.getFullYear();  // 获取完整的年份(4位,1970-????)
    outStr += "-";
    outStr += currentDate.getMonth() + 1; // 获取当前月份(0-11,0代表1月)
    outStr += "-";
    outStr += currentDate.getDate();      //获取当前日(1-31)
    return outStr;
}

//-----------------------------------------------------------------------------
function setOneTableRowColor(table_01) {
    $('#' + table_01).find('tr').hover(function () {
        $(this).addClass("row__hover");
    }, function () {
        $(this).removeClass("row__hover");
    }).click(function () {
        $('#' + table_01).find('tr').removeClass('row__clicked');
        $(this).addClass('row__clicked');
    });
}

function setTwoTableRowColor(table_01, table_02) {
    // 鼠标经过事件
    $('#' + table_01).find('tr').each(function (index) {
        $(this).hover(function () {
            $(this).addClass("row__hover");
            var _$tr2 = $('#' + table_02).find('tr').eq(index);
            _$tr2.addClass("row__hover");
        }, function () {
            $(this).removeClass("row__hover");
            var _$tr2 = $('#' + table_02).find('tr').eq(index);
            _$tr2.removeClass("row__hover");
        }).click(function () {
            $('#' + table_01).find('tr').removeClass('row__clicked');
            $('#' + table_02).find('tr').removeClass('row__clicked');
            $(this).addClass('row__clicked');
            $('#' + table_02).find('tr').eq($(this).index()).addClass('row__clicked');
        });
    });

    $('#' + table_02).find('tr').each(function (index) {
        $(this).hover(function () {
            $(this).addClass("row__hover");
            var _$tr1 = $('#' + table_01).find('tr').eq(index);
            _$tr1.addClass("row__hover");
        }, function () {
            $(this).removeClass("row__hover");
            var _$tr1 = $('#' + table_01).find('tr').eq(index);
            _$tr1.removeClass("row__hover");
        }).click(function () {
            $('#' + table_01).find('tr').removeClass('row__clicked');
            $('#' + table_02).find('tr').removeClass('row__clicked');
            $(this).addClass('row__clicked');
            $('#' + table_01).find('tr').eq($(this).index()).addClass('row__clicked');
        });
    });
}

//-----------------------------------------------------------------------------
//    文件上传
//-----------------------------------------------------------------------------
//生成随机guid数(参考网上)  
function GetGuidGenerator() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

function AjaxFileUpload(fileElementId, upload_url, file_id) {
    var $loading = $("#" + "loading_" + fileElementId);
    var $err = $("#" + "error_" + fileElementId);
    var $download = $("#" + "download_" + fileElementId);
    var $butUpload = $("#" + "upload_" + fileElementId);
    var $fileName = $("#" + "b_" + fileElementId);   //保存上传后的文件名
    var $showImg = $("#" + "img_" + fileElementId);  //显示上传后的图片
    var $filePathId = $("#" + "d_" + fileElementId); //保存上传后的文件目录名
    var $dirType = $("#" + "t_" + fileElementId).val() + "/" + file_id;    //目录名

    $loading.ajaxStart(function () {
        $(this).show();
    }).ajaxComplete(function () {
        $loading.hide();
    });
    $err.ajaxStart(function () {
        $(this).hide();
    });
    $download.ajaxStart(function () {
        $(this).hide();
    });

    var guid = GetGuidGenerator(); //唯一标识guid 
    var _upload_data = {};
    if ($filePathId.val() === "") {
        _upload_data = {guid: guid, dir: $dirType};
    } else {
        _upload_data = {guid: $filePathId.val(), dir: $dirType};
    }
    //console.info(JSON.stringify(_upload_data));
    $.ajaxFileUpload({
        secureuri: false,
        fileElementId: fileElementId,
        type: "POST",
        url: upload_url,
        timeout: 30 * 1000,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: _upload_data,
        cache: false,
        beforeSend: function () {
        },
        success: function (data) {
            if (typeof (data.success) !== 'undefined') {
                if (data.success === false) {
                    $err.html(data.errorMsg).show();
                } else {
                    $filePathId.val(data.fileDir);        // 设置文件在服务器上的物理路径
                    $download.val(data.fileName);         // 设置文件名
                    $fileName.val(data.fileUrl);          // 设置下载用路径(URL)
                    $download.show();
                    $butUpload.attr("disabled", true);
                    $("#filename_hzUploadFile").text(""); // 清空刚才选择的文件
                    if ($showImg.length > 0) {
                        $showImg.attr("src", data.urlPath);
                        $showImg.show();
                    }
                    // 执行写入数据库操作
                    window._InstancePagePicture.OnFileUploadEnd($("#b_hzUploadFile").val(), $("#d_hzUploadFile").val(), $("#download_hzUploadFile").val());
                }
            }
        },
        complete: function (xml, status) {
            $loading.unbind('ajaxStart');
            $loading.unbind('ajaxComplete');
            $err.unbind('ajaxStart');
            $download.unbind('ajaxStart');
        },
        error: function () {
        }
    });
    return false;
}
// 文件选择内容出现变化时触发事件
function onFileInputChange(fileElementId) {
    var $self = $("#" + fileElementId);
    var $fileName = $("#" + "filename_" + fileElementId);
    var $butUpload = $("#" + "upload_" + fileElementId);

    $fileName.html($self.val().split('\\').pop());
    $butUpload.attr("disabled", false);

    $("#success_hzUploadFile").hide();
    $("#error_hzUploadFile").hide();
}
/*
 $(self).bind("change", function() {
 var s = $(self).val().replace(/(c:\\)*fakepath/i, '');
 filename.val(s);
 });*/
// 校验图片格式及大小
function validateImage(obj) {
    var file = obj;
    var tmpFileValue = file.value;

    //校验图片格式
    if (/^.*?\.(gif|png|jpg|jpeg|bmp)$/.test(tmpFileValue.toLowerCase())) {
        return true;
    } else {
        alert("只能上传jpg、jpeg、png、bmp或gif格式的图片！");
        return false;
    }
}